package com.nimitz.module.employee.mapper;

import com.nimitz.module.employee.domain.EmpEmployee;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * 人员 数据层
 */
public interface EmpEmployeeMapper {

    /**
     * 新增人员
     *
     * @param employee 人员
     * @return 结果
     */
    int insertEmployee(@Param(value = "employee") EmpEmployee employee);

    /**
     * 批量删除人员
     *
     * @param employeeIds 人员id集合
     * @return 结果
     */
    int deleteEmployeeByIds(@Param(value = "updateBy") String updateBy, @Param(value = "employeeIds") Integer[] employeeIds);

    /**
     * 修改人员
     *
     * @param employee 人员
     * @return 结果
     */
    int updateEmployee(@Param(value = "employee") EmpEmployee employee);

    /**
     * 批量修改人员
     *
     * @param employeeList 人员
     * @return 结果
     */
    int updateEmployeeByList(@Param(value = "employeeList") List<EmpEmployee> employeeList);

    /**
     * 根据人员id查询人员
     *
     * @param employeeId 人员id
     * @return 人员
     */
    EmpEmployee selectEmployeeById(@Param(value = "employeeId") Integer employeeId);

    /**
     * 根据人员ids查询人员
     *
     * @param employeeIds 人员ids
     * @return 人员
     */
    List<EmpEmployee> selectEmployeeByIds(@Param(value = "employeeIds") Integer[] employeeIds);

    /**
     * 根据条件查询人员列表（含分页）
     *
     * @param employee 人员
     * @return 人员集合
     */
    List<EmpEmployee> selectEmployeeList(@Param(value = "employee") EmpEmployee employee);

    /**
     * 批量提交
     *
     * @param updateBy    更新者
     * @param employeeIds 人员ID集合
     * @return 结果
     */
    int submitEmployee(@Param(value = "updateBy") String updateBy, @Param(value = "employeeIds") Integer[] employeeIds);

    /**
     * 批量驳回
     *
     * @param updateBy    更新者
     * @param employeeIds 人员ID集合
     * @return 结果
     */
    int rejectEmployee(@Param(value = "updateBy") String updateBy, @Param(value = "employeeIds") Integer[] employeeIds);

    /**
     * 批量审核
     *
     * @param updateBy    更新者
     * @param employeeIds 入职ID集合
     * @return 结果
     */
    int auditEmployee(@Param(value = "updateBy") String updateBy, @Param(value = "employeeIds") Integer[] employeeIds);

    /**
     * 校验警号是否唯一
     *
     * @param employeeCode 警号
     * @return 结果
     */
    EmpEmployee checkEmployeeCodeUnique(String employeeCode);

    /**
     * 校验联系电话是否唯一
     *
     * @param employeePhone 联系电话
     * @return 结果
     */
    EmpEmployee checkEmployeePhoneUnique(String employeePhone);

    /**
     * 校验证件号码是否唯一
     *
     * @param employeeIdCard 证件号码
     * @return 结果
     */
    EmpEmployee checkEmployeeIdCardUnique(String employeeIdCard);
}
